<?php

namespace App\Observers;

use App\Models\Category;
use App\Models\Topic;

class CategoryObserver
{
    public function saving(Category $category)
    {
        // 顶级类目 parent_id = null;
        if (empty($category->parent_id)) {
            $category->parent_id = null;
        }

        // 如果创建的是一个根类目
        if (is_null($category->parent_id) || $category->parent_id == 0) {
            // 将层级设为 0
            $category->level = 0;
            // 将 path 设为 -
            $category->path = '-';
        } else {
            // 将层级设为父类目的层级 + 1
            $category->level = $category->parent->level + 1;
            // 将 path 值设为父类目的 path 追加父类目 ID 以及最后跟上一个 - 分隔符
            $category->path = $category->parent->path . $category->parent_id . '-';

            // 父级 是否拥有子类目
            if (empty($category->parent->is_directory)) {
                $parent = $category->parent;
                $parent->is_directory = true;
                $parent->save();
            }
        }
    }
}
